'''
function:
1.log in
2.log out
3.save money
4.draw money
5.check balance
6.interface and interaction design
7.data source
'''

# data source
user_data = [{'user':'Python1', 'passwords':'a123', 'money':6666},
             {'user':'Python2', 'passwords':'b123', 'money':7777},
             {'user':'Python3', 'passwords':'c123', 'money':8888}]

#定义一个空列表的目的是让atm记住当前登陆的用户信息
user_list = []

# interface and interaction design
def interface():
    print('='*84)
    # print(' '*39, '欢迎使用ATM', ' '*39)
    # print(' ' * 41, '1.登录', ' ' * 41)
    print(' ' * 40, '1.余额查询', ' ' * 40)
    print(' ' * 41, '2.存款', ' ' * 41)
    print(' ' * 41, '3.取款', ' ' * 41)
    print(' ' * 40, '4.切换用户', ' ' * 40)
    print(' ' * 41, '5.退出', ' ' * 41)
    print('='*84)
    # print('请输入对应选择：')

# log in
def login():
    '''
    判断登陆信息是否存在用户数据中，并临时记录在user_list中
    :return:
    '''
    global user_list
    print('='*39, '欢迎使用ATM', '='*39)
    key_user = input('请输入用户名：')
    key_passwords = input('请输入密码：')
    for i, user_dict in enumerate(user_data):
        if user_dict['user'] == key_user and user_dict['passwords'] == key_passwords:
            user_list.append(user_dict)
    if user_list != []:
        print('*'*40, '登录成功', '*'*40)
    else:
        if input('输入错误，是否重新输入y/n:') == 'y':
            login()

# logout
def logout():
    print('*'*38, '谢谢使用，本次使用已经结束', '*'*38)

# check balance
def balance():
    print('='*80)
    print('您的账户余额为:{}元'.format(user_list[0]['money']))
    print('='*80)
# save money
def save_money():
    print('=' * 80)
    sm = float(input('请输入您要存入的金额：'))
    # is_integer()判断一个浮点是否为整数，小数为FALSE
    if sm.is_integer() == False:
        print('提醒：只能存入整数金额')
        save_money()
    else:
        user_list[0]['money'] += sm
        print('您已存入{}元'.format(sm))
    print('=' * 80)

# draw money
def draw_money():
    print('=' * 80)
    dm = float(input('您要取出的金额：'))
    if dm.is_integer() == False:
        print('提醒：只能取出整数金额')
        draw_money()
    else:
        user_list[0]['money'] -= dm
        if user_list[0]['money']<0:
            print('提示：您的余额不够')
            draw_money()
        else:
            print('您已取出：{}元'.format(dm))

# 总控制函数
def head():
    while True:
        global user_list
        user_list = []
        login()
        k = 1
        while True:
            interface()
            key_figure = int(input('请输入您选择的业务:'))
            if key_figure == 1:
                k = key_figure
                balance()
                input('按任意键返回！！！')
            elif key_figure == 2:
                k = key_figure
                save_money()
                input('按任意键返回！！！')
            elif key_figure == 3:
                k = key_figure
                draw_money()
                input('按任意键返回！！！')
            elif key_figure == 4:
                print('请先退出后再重新登录')
            elif key_figure == 5:
                k = key_figure
                break
        if k == 5:
            logout()
            break

head()
